package mlog

type LogConfig struct {
	Outputs    []string `json:"outputs" toml:"outputs"`         // 输出源，分为：stdout,stderr，文件名称
	Level      string   `json:"level" toml:"level"`             // 日志等级：DEBUG, INFO, WARN, ERROR, DPANIC, PANIC, FATAL；默认INFO
	LevelColor bool     `json:"level_color" toml:"level_color"` // 显示日志等级颜色，仅打印显示；默认不显示

	//输出源有写入文件时，以下配置生效
	MaxSize    int  `json:"max_size" toml:"max_size"`       //最大写入大小，单位是MB
	MaxAge     int  `json:"max_age" toml:"max_age"`         //保留多少天的日志文件
	MaxBackups int  `json:"max_backups" toml:"max_backups"` //保留多少个日志文件
	LocalTime  bool `json:"local_time" toml:"local_time"`   // 是否使用本地时间
	Compress   bool `json:"compress" toml:"compress"`       //是否将老文件压缩（gzip格式)

	//Encoder
	Format     string         `json:"format" toml:"format"`           //日志显示格式：json,text(默认text)
	TimeFormat string         `json:"timeFormat" toml:"time_format"`  //日期格式；默认：2006/01/02 15:04:05
	CallerType string         `json:"caller_type" toml:"caller_type"` //日志调用记录的类型；如prometheus/write.go:15; one:单文件(默认)；short:包加文件；full:完整路径；
	Encoder    *EncoderConfig `json:"encoder" toml:"encoder"`         //编码格式处理配置

}

// EncoderConfig 除ConsoleSeparator用于文本格式外，其余都用于json格式设置
type EncoderConfig struct {
	MessageKey    string `json:"message_key" toml:"message_key"`       //json格式字段名称：消息；默认：msg
	LevelKey      string `json:"level_key" toml:"level_key"`           //json格式字段名称：等级；默认：level
	TimeKey       string `json:"time_key" toml:"time_key"`             //json格式字段名称：时间；默认：time
	CallerKey     string `json:"caller_key" toml:"caller_key"`         //json格式字段名称：文件；默认：file
	FunctionKey   string `json:"function_key" toml:"function_key"`     //json格式字段名称：函数；默认：空，不打印
	StacktraceKey string `json:"stacktrace_key" toml:"stacktrace_key"` //json格式字段名称：
	LineEnding    string `json:"lineEnding" toml:"lineEnding"`         //json格式字段名称：换行符；默认：\n
	//SkipLineEnding bool   `json:"skipLineEnding" toml:"skipLineEnding"`
	//NameKey        string `json:"name_key" toml:"name_key"`

	ConsoleSeparator string `json:"consoleSeparator" yaml:"consoleSeparator"` //文本格式间隔符，默认\t
}
